﻿// owner 蒋家伟

#include "ElementId.h"

// std
#include <xstddef>

using namespace jsdk;

ElementId jsdk::ElementId::s_InvalidId = ElementId();

jsdk::ElementId::ElementId() :m_elementId(0)
{
}

jsdk::ElementId::ElementId(int64_t value):
    m_elementId(value)
{
}

const std::int64_t& jsdk::ElementId::toValue() const
{
    return m_elementId;
}

jsdk::ElementId& jsdk::ElementId::operator=(const ElementId& elementId)
{
    this->m_elementId = elementId.m_elementId;
    return *this;
}

jsdk::ElementId::ElementId(const ElementId& elementId):m_elementId(elementId.m_elementId)
{
}

bool jsdk::ElementId::operator<(const ElementId& elementId) const
{
    return this->m_elementId < elementId.m_elementId;
}

bool jsdk::ElementId::operator>(const ElementId& elementId) const
{
    return this->m_elementId > elementId.m_elementId;
}

bool jsdk::ElementId::operator==(const ElementId& elementId) const
{
    return this->m_elementId == elementId.m_elementId;
}

bool jsdk::ElementId::isValid() const
{
    return m_elementId > 0;
}

std::size_t jsdk::ElementHash::operator()(const ElementId& elementId) const
{
    return std::hash<size_t>().operator()(elementId.toValue());
}
